/*
   FieldVis - A Tool for Visualizing Astrophysical Magnetohydrodynamic Flow
   
   Copyright (C) 2006 - 2008     FieldVis Development Team
  
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.
  
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
  
   You should have received a copy of the GNU General Public License along
   with this program; if not, write to the Free Software Foundation, Inc.,
   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

   File        : flowviewer.h
   Author      : Matt Heinzen  (heinzen@cs.umn.edu)
                 Digital Technology Center - University of Minnesota

   Description :
*/

#ifndef _FLOWVIEWER_H_
#define _FLOWVIEWER_H_

#include "dimensions.h"


// default display parameters
#define DEFAULT_WIN_WIDTH ((1024 + 1280) / 2)
#define DEFAULT_WIN_HEIGHT ((768 + 1024) / 2)
#define FOV_ANGLE 50.0

// miscellaneous dimensions
#define BB_X_MIN VOL_PHYS_X_MIN
#define BB_X_MAX VOL_PHYS_X_MAX
#define BB_Y_MIN VOL_PHYS_Y_MIN
#define BB_Y_MAX VOL_PHYS_Y_MAX
#define BB_Z_MIN VOL_PHYS_Z_MIN
#define BB_Z_MAX VOL_PHYS_Z_MAX
#define ORIGIN_BASE_X ((BB_X_MIN + BB_X_MAX) * 0.5)
#define ORIGIN_BASE_Y ((BB_Y_MIN + BB_Y_MAX) * 0.5)
#define ORIGIN_BASE_Z ((BB_Z_MIN + BB_Z_MAX) * 0.5)
#define CLIP_OFFSET 0.0001
#define KEY_SLIDE_STEP 0.1
#define MOUSE_SLIDE_STEP 0.002
#define MOUSE_ZOOMED_TEX_SPEED_FACTOR 0.1

#define VIEW_START_LOOK 0.636485, 0.591799, -0.494632
//#define VIEW_START_LOOK 1.0, 0.0, 0.0
//#define VIEW_START_UP 0.0, 0.3, 0.0
#define VIEW_START_UP 0.345853, 0.354230, 0.868854
#define VIEW_START_SIDE 0.689400, -0.724083, 0.020787
#define VIEW_START_DIST_FROM_ORIGIN ((BB_Z_MAX - BB_Z_MIN) * 3.0)

// light directions
typedef enum LightDirection { LIGHT_LEFT, LIGHT_RIGHT, LIGHT_FRONT, LIGHT_BACK,
	LIGHT_BOTTOM, LIGHT_TOP, LIGHT_LOWER_LEFT, LIGHT_LOWER_RIGHT,
	LIGHT_UPPER_LEFT, LIGHT_UPPER_RIGHT };

// useful macros
#define MIN(X, Y) (X < Y ? X : Y)
#define MAX(X, Y) (X > Y ? X : Y)


#endif // _FLOWVIEWER_H_
